package com.signature.auto.common.util;


import com.signature.auto.common.consts.ApiSignConst;

import java.util.concurrent.ThreadLocalRandom;

/**
 * @author Jerry
 * @date 2024-01-24 11:32
 * 内部工具类
 */
public class ApiFoxUtil {

    private ApiFoxUtil() {
    }

    /**
     * 打印 api签名 版本字符画
     */
    public static void printApiSignature() {
        String str = "     ██             ██    ████████ ██                              ██                             ████████                                       \n" +
                "    ████    ██████ ░░    ██░░░░░░ ░░   █████                      ░██                            ██░░░░░░                                        \n" +
                "   ██░░██  ░██░░░██ ██  ░██        ██ ██░░░██ ███████   ██████   ██████ ██   ██ ██████  █████   ░██         █████  ██████ ██    ██  █████  ██████\n" +
                "  ██  ░░██ ░██  ░██░██  ░█████████░██░██  ░██░░██░░░██ ░░░░░░██ ░░░██░ ░██  ░██░░██░░█ ██░░░██  ░█████████ ██░░░██░░██░░█░██   ░██ ██░░░██░░██░░█\n" +
                " ██████████░██████ ░██  ░░░░░░░░██░██░░██████ ░██  ░██  ███████   ░██  ░██  ░██ ░██ ░ ░███████  ░░░░░░░░██░███████ ░██ ░ ░░██ ░██ ░███████ ░██ ░ \n" +
                "░██░░░░░░██░██░░░  ░██         ░██░██ ░░░░░██ ░██  ░██ ██░░░░██   ░██  ░██  ░██ ░██   ░██░░░░          ░██░██░░░░  ░██    ░░████  ░██░░░░  ░██   \n" +
                "░██     ░██░██     ░██   ████████ ░██  █████  ███  ░██░░████████  ░░██ ░░██████░███   ░░██████   ████████ ░░██████░███     ░░██   ░░██████░███   \n" +
                "░░      ░░ ░░      ░░   ░░░░░░░░  ░░  ░░░░░  ░░░   ░░  ░░░░░░░░    ░░   ░░░░░░ ░░░     ░░░░░░   ░░░░░░░░   ░░░░░░ ░░░       ░░     ░░░░░░ ░░░    \n" +
                "(v" + ApiSignConst.VERSION_NO + ")";
        System.out.println(str);
    }

    /**
     * 客户端banner
     */
    public static void printApiClientSignature() {
        String str = "     ██             ██    ████████ ██                              ██                              ██████   ██ ██                    ██  \n" +
                "    ████    ██████ ░░    ██░░░░░░ ░░   █████                      ░██                             ██░░░░██ ░██░░                    ░██  \n" +
                "   ██░░██  ░██░░░██ ██  ░██        ██ ██░░░██ ███████   ██████   ██████ ██   ██ ██████  █████    ██    ░░  ░██ ██  █████  ███████  ██████\n" +
                "  ██  ░░██ ░██  ░██░██  ░█████████░██░██  ░██░░██░░░██ ░░░░░░██ ░░░██░ ░██  ░██░░██░░█ ██░░░██  ░██        ░██░██ ██░░░██░░██░░░██░░░██░ \n" +
                " ██████████░██████ ░██  ░░░░░░░░██░██░░██████ ░██  ░██  ███████   ░██  ░██  ░██ ░██ ░ ░███████  ░██        ░██░██░███████ ░██  ░██  ░██  \n" +
                "░██░░░░░░██░██░░░  ░██         ░██░██ ░░░░░██ ░██  ░██ ██░░░░██   ░██  ░██  ░██ ░██   ░██░░░░   ░░██    ██ ░██░██░██░░░░  ░██  ░██  ░██  \n" +
                "░██     ░██░██     ░██   ████████ ░██  █████  ███  ░██░░████████  ░░██ ░░██████░███   ░░██████   ░░██████  ███░██░░██████ ███  ░██  ░░██ \n" +
                "░░      ░░ ░░      ░░   ░░░░░░░░  ░░  ░░░░░  ░░░   ░░  ░░░░░░░░    ░░   ░░░░░░ ░░░     ░░░░░░     ░░░░░░  ░░░ ░░  ░░░░░░ ░░░   ░░    ░░  \n" +
                "(v" + ApiSignConst.VERSION_NO + ")";
        System.out.println(str);
    }

    /**
     * 指定元素是否为null或者空字符串
     *
     * @param str 指定元素
     * @return 是否为null或者空字符串
     */
    public static boolean isEmpty(Object str) {
        return str == null || "".equals(str);
    }

    /**
     * 生成指定长度的随机字符串
     *
     * @param length 字符串的长度
     * @return 一个随机字符串
     */
    public static String getRandomString(int length) {
        String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < length; i++) {
            int number = ThreadLocalRandom.current().nextInt(62);
            sb.append(str.charAt(number));
        }
        return sb.toString();
    }

    /**
     * 指定元素是否不为 (null或者空字符串)
     *
     * @param str 指定元素
     * @return 是否为null或者空字符串
     */
    public static boolean isNotEmpty(Object str) {
        return !isEmpty(str);
    }


}
